﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConvertToGif
{
    /// <summary>
    /// 格式转换中参数定义
    /// </summary>
    public class GifConverData
    {
        /// <summary>
        /// 源文件
        /// </summary>
        public string SourceFile { get; set; }
        /// <summary>
        /// 转换后的文件
        /// </summary>
        public string TargetFile { get; set; }
        /// <summary>
        /// 是否覆盖生成文件同名文件
        /// </summary>
        public bool IsCover { get; set; } = true;
        /// <summary>
        /// 视频分辨率
        /// </summary>
        public string VideoSize { get; set; }

        /// <summary>
        /// 输出的视频帧数（截取的前n帧）
        /// </summary>
        public int Vframes { get; set; }

        /// <summary>
        /// 合成命令参数
        /// </summary>
        /// <returns></returns>
        public string GetArguments()
        {
            StringBuilder builder = new StringBuilder();
            //源文件
            builder.AppendFormat("-i {0}", SourceFile);
            //是否覆盖同名文件
            if (this.IsCover)
                builder.AppendFormat(" -y");
            //视频分辨率
            if (string.IsNullOrEmpty(VideoSize) == false)
                builder.AppendFormat(" -s {0}", VideoSize);
            //文件格式
            builder.AppendFormat(" -f gif");
            //输出帧数
            if (Vframes > 0)
                builder.AppendFormat(" -vframes {0}", Vframes);
            //builder.AppendFormat(" -dframes 500"); //此参数无效
            //builder.AppendFormat(" -frames 500"); //此参数和vframes结果相同

            //输出文件
            builder.AppendFormat(" {0}", TargetFile);

            return builder.ToString();
        }

    }
}
